# NMEA 2000

FDI_NMEA 2000 接口用户使用手册

NMEA 2000 接口

# 1. 简介

NMEA 2000 是用于船舶与航海设备间数据通信的标准化接口协议,经串行网络传输位置、速度、状态等信息,广泛应用于船舶电子设备互联与数据共享。

FDISYSTEMS 产品兼容国际 NMEA 2000 协议,可与各类 NMEA 2000 设备互通,便于集成到船舶与海洋应用中,提供可靠、高效的数据通信。

NMEA 2000 应用示意

# 2. 知识储备

# (1) 什么是 NMEA 2000?

NMEA 2000(National Marine Electronics Association 2000)规定了船舶电子设备通过共享网络通信与交换信息的规范。协议基于 CAN(Controller Area Network)总线传输,采用控制器–设备架构,支持全双工通信,同一总线上最多可连接约 250 个设备(如 GPS、雷达、声呐、自动驾驶系统等)。

# (2) 什么是 PGN?PGN 与 CAN ID 的关系是什么?

PGN 与 CAN ID 关系

简单来说,PGN 是 NMEA 2000 的数据标识,也可理解为 CAN 扩展帧头中的一部分字段。接收 NMEA 2000 数据时须使用 29 bit 扩展帧。除 PGN 外,CAN 帧头还包含设备源地址、目标地址与优先级等信息。

# (3) NMEA 2000 与 CAN 通信的关系

NMEA 2000 是基于 CAN 电气与硬件基础的高层软件协议,规定了基于 CAN 帧头与数据帧的编码与交换格式。

# (4) 什么是多帧快速包发送方式?

当有效载荷总长度超过 8 字节时,需按多帧快速包格式在 CAN 总线上安全、连续地发送。格式示意如下:

帧 Byte[0](序号) 其余字节
Packet_1 0 Byte[1]=有效数据长度(示例为 28);Byte[2]~Byte[8]=Data[1]~Data[7]
Packet_2 1 Data[8]~Data[15]
Packet_3 2 Data[16]~Data[24]
Packet_4 3 Data[25]~Data[28];不足字节填 0xFF

说明:

  1. 首帧 Byte[1] 为实际有效数据字节长度。
  2. 各帧 Byte[0] 从 0 起依次递增,作为包序号。
  3. 其余字节为有效载荷,未使用字节填 0xFF。

# 3. 使用方法

# (0) 地面站配置

产品 CAN 总线上可挂载多种基于 CAN 的通信协议。若要通过 CAN 输出 NMEA 2000,须在上位机中将对应端口配置为 NMEA 2000,保存并重启后生效。

地面站配置 NMEA 2000

# (1) MCU 单片机 CAN 总线接收

可依据本公司通信协议获取对应数据包的 CAN ID 与字段定义,在总线上接收并解码。注意:总线上以 扩展帧 方式发布。

# (2) NMEA 2000 设备直连

也可使用常见 NMEA 2000 分析仪直接接入惯导模块,在分析仪上查看常用导航信息。

NMEA 2000 设备直连

# 4. 测试效果

用 CAN 分析仪抓取总线数据,可见模块按协议标准向总线发布 NMEA 2000 数据。

CAN 分析仪测试效果

# 5. 通信协议

# (1) 目前支持的 NMEA 2000 数据包

协议字段定义见 [FDI_NMEA 2000](/developers/02-fdilink/nmea 2000.html)。

序号 PGN CAN_ID 描述 频率 (Hz) 数据长度 (bit) 波特率 数据包类型
1 126992 0x01F010FF UTC 时间 1 8 250K 单帧
2 127250 0x01F112FF 艏向 1 8 250K 单帧
3 127251 0x01F113FF 转向速率 10 8 250K 单帧
4 127257 0x01F119FF 姿态角 1 8 250K 单帧
5 127258 0x01F11AFF 磁偏角 1 5 250K 单帧
6 129025 0x01F801FF 位置,快速更新 10 8 250K 单帧
7 129026 0x01F802FF COG & SOG,快速更新 4 8 250K 多帧
8 129029 0x01F805FF GNSS 位置数据 1 51 250K 多帧
9 129044 0x01F814FF 基准 1 20 250K 单帧
10 129539 0x01FA03FF GNSS DOPs 1 8 250K 多帧
11 129540 0x01FA04FF GNSS 信息 1 15 250K 多帧
12 129545 0x01FA09FF GNSS RAIM 输出 2 15 250K 多帧
13 129547 0x01FA0BFF GNSS 伪距误差统计 2 15 250K 单帧

# (2) 数据包协议

可根据 NMEA 2000 国际标准及上表 PGN 编号查询字段定义并正确解析。本公司说明见 [FDI_NMEA 2000](/developers/02-fdilink/nmea 2000.html);国际标准 PGN 表见 [NMEA 2000 PGN Table 手册](/pdfs/NMEA 2000_v1-300_App_B1_PGN_Table(1).pdf)。

NMEA 2000 数据包协议示意